/*
 * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
 * under one or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information regarding copyright
 * ownership. Camunda licenses this file to you under the Apache License,
 * Version 2.0; you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict';

var $ = require('jquery');
module.exports = function() {
  return {
    restrict: 'A',
    link: function(scope, element, attrs) {
      var help = attrs.helpText || scope.$eval(attrs.helpTextVar);
      var p = 'right';

      if (attrs.helpPlacement) {
        p = scope.$eval(attrs.helpPlacement);
      }

      var shown;

      function show() {
        /*jshint validthis: true */
        var self = this;

        // optimization to work correctly with menues
        if ($(self).is('.open')) {
          return;
        }

        shown = true;

        setTimeout(function() {
          if (shown) {
            $(self).tooltip('show');
          }
        }, 200);
      }

      function hide() {
        shown = false;
        /*jshint validthis: true */
        $(this).tooltip('hide');
      }

      $(element)
        .tooltip({
          title: help,
          placement: p,
          trigger: 'manual',
          container: 'body'
        })
        .click(hide)
        .hover(show, hide);
    }
  };
};
